package br.com.site;

import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;

import model.Equipamento;
import model.Equipe;
import model.Estrutura;
import model.PDI;
import model.Perigo;
import model.Veiculo;
import model.Vitima;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import android.util.Log;


public class Global {

	public static boolean novoPdi = false, desPoligono = false, editarPDI = false;
	
	public static String[] strVei = {"Ambulância","Veículo Aéreo",
		"Veículo de Socorro Terrestre","Veículo de Socorro Aquático"};
	public static String[] strEst = {"Casa","Edifício","Edifício Comercial","Estádio",
		"Hospital","Indústria","Shopping Center"};
	public static String[] strTeam = {"Aeronáutica","Bombeiros","CEDAE","CEG","Cet-Rio",
		"CNEN","Comlurb","Def. Civil Estad.","Def. Civil Mun.","Exército",
		"Geo-Rio","IBAMA","IML","INEA","Light","Marinha","Polícia Civil",
		"Polícia Militar","Voluntários"};
	public static String[] strPer = {"Colapso de Edifício","Deslizamento de Terra",
		"Gases Tóxicos","Líquidos Tóxicos","Exposição Radioativa",
		"Ratos","Substâncias Tóxicas"};
	
	public static PDI pdiEdicao;
	
	public final static int QUIT = 183;
	
	public static ArrayList<PDI> getArrayDeLinks(PDI excluido){
		ArrayList<PDI> al = new ArrayList<PDI>();
		
		if(excluido instanceof Veiculo){
			Veiculo veiculo = (Veiculo) excluido;
			for (Equipamento eq : MainActivity.listaEquipamentos) {
				if(eq.getVeiculo() == null) continue;
				if(eq.getVeiculo().equals(veiculo)) al.add(eq);
			}
		}
		else if (excluido instanceof Estrutura){
			Estrutura estrutura = (Estrutura) excluido;
			for (Equipe e : MainActivity.listaEquipes) {
				if(e.getEstrutura() == null) continue;
				if(e.getEstrutura().equals(estrutura)) al.add(e);
			}
			for (Vitima v : MainActivity.listaVitimas) {
				if(v.getEstrutura() == null) continue;
				if(v.getEstrutura().equals(estrutura)) al.add(v);
			}
		}
		else if (excluido instanceof Equipamento){
			Equipamento equipamento = (Equipamento) excluido;
			for (Veiculo v : MainActivity.listaVeiculos) {
				if(v.getEquipamento() == null) continue;
				if(v.getEquipamento().equals(equipamento)) al.add(v);
			}
			for (Equipe e : MainActivity.listaEquipes) {
				if(e.getEquipamento() == null) continue;
				if(e.getEquipamento().equals(equipamento)) al.add(e);
			}
		}
		else if (excluido instanceof Equipe){
			Equipe equipe = (Equipe) excluido;
			for (Veiculo v : MainActivity.listaVeiculos) {
				if(v.getEquipe() == null) continue;
				if(v.getEquipe().equals(equipe)) al.add(v);
			}
			for (Estrutura es : MainActivity.listaEstruturas) {
				if(es.getEquipe() == null) continue;
				if(es.getEquipe().equals(equipe)) al.add(es);
			}
			for (Equipamento eq : MainActivity.listaEquipamentos) {
				if(eq.getEquipe() == null) continue;
				if(eq.getEquipe().equals(equipe)) al.add(eq);
			}
			for (Perigo p : MainActivity.listaPerigos) {
				if(p.getEquipe() == null) continue;
				if(p.getEquipe().equals(equipe)) al.add(p);
			}
			for (Vitima v : MainActivity.listaVitimas) {
				if(v.getEquipe() == null) continue;
				if(v.getEquipe().equals(equipe)) al.add(v);
			}
		}
		else if (excluido instanceof Perigo){
			Perigo perigo = (Perigo) excluido;
			for (Estrutura es : MainActivity.listaEstruturas) {
				if(es.getPerigo() == null) continue;
				if(es.getPerigo().equals(perigo)) al.add(es);
			}
			for (Equipe e : MainActivity.listaEquipes) {
				if(e.getPerigo() == null) continue;
				if(e.getPerigo().equals(perigo)) al.add(e);
			}
			for (Vitima v : MainActivity.listaVitimas) {
				if(v.getPerigo() == null) continue;
				if(v.getPerigo().equals(perigo)) al.add(v);
			}
		}
		else if (excluido instanceof Vitima){
			Vitima vitima = (Vitima) excluido;
			for (Estrutura es : MainActivity.listaEstruturas) {
				if(es.getVitima() == null) continue;
				if(es.getVitima().equals(vitima)) al.add(es);
			}
			for (Perigo p : MainActivity.listaPerigos) {
				if(p.getVitima() == null) continue;
				if(p.getVitima().equals(vitima)) al.add(p);
			}
		}else{
			al = null;
		}
		
		return al;
	}
	
	public static String getLocalIpAddress() {
	    try {
	        for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
	            NetworkInterface intf = en.nextElement();
	            for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
	                InetAddress inetAddress = enumIpAddr.nextElement();
	                if (!inetAddress.isLoopbackAddress()) {
	                    return inetAddress.getHostAddress().toString();
	                }
	            }
	        }
	    } catch (SocketException ex) {
	        Log.e("SiTE", ex.toString());
	    }
	    return null;
	}
	
	public static String getExternalIpAdress () {
        try {
        	HttpClient httpclient = new DefaultHttpClient();
        	HttpGet httpget = new HttpGet("http://wiki.iti-lab.org/ip.php");
        	// HttpGet httpget = new HttpGet("http://whatismyip.everdot.org/ip");
        	// HttpGet httpget = new HttpGet("http://whatismyip.com.au/");
        	// HttpGet httpget = new HttpGet("http://www.whatismyip.org/");
        	HttpResponse response;
        	
        	response = httpclient.execute(httpget);
        	
        	HttpEntity entity = response.getEntity();
        	if (entity != null) {
        		long len = entity.getContentLength();
        		if (len != -1 && len < 1024) {
        			String str=EntityUtils.toString(entity);
                    return str;
        		} else return "Resposta demorou muito ou ocorreu um erro";
        	} else {
        		//return "Null:"+response.getStatusLine().toString();
        		return null;
        	}
            
        }catch (ClientProtocolException e){
        	return null;
        }catch (IOException e){
        	return null;
        }

    }

}
